package com.yuelao.yuelao_backend.service;

import com.yuelao.yuelao_backend.entity.SystemConfig;

import java.util.List;
import java.util.Map;

/**
 * 系统配置服务接口
 */
public interface SystemConfigService {
    /**
     * 根据配置键获取配置值
     */
    String getConfigValue(String configKey);

    /**
     * 根据配置键获取配置值，如果不存在则返回默认值
     */
    String getConfigValue(String configKey, String defaultValue);

    /**
     * 批量获取配置
     */
    Map<String, String> getConfigValues(List<String> configKeys);

    /**
     * 设置配置值
     */
    boolean setConfigValue(String configKey, String configValue, String description, String groupName);

    /**
     * 更新配置值
     */
    boolean updateConfigValue(String configKey, String configValue, String description);

    /**
     * 删除配置
     */
    boolean deleteConfig(String configKey);

    /**
     * 根据分组获取配置列表
     */
    List<SystemConfig> getConfigsByGroup(String groupName);

    /**
     * 从缓存获取配置值，如果缓存不存在则从数据库加载
     * @param groupName 配置分组名
     * @param configKey 配置键
     * @param defaultValue 默认值
     * @return 配置值
     */
    String getCachedConfigValue(String groupName, String configKey, String defaultValue);

    /**
     * 从缓存获取整数类型配置值
     * @param groupName 配置分组名
     * @param configKey 配置键
     * @param defaultValue 默认值
     * @return 配置值
     */
    int getCachedConfigInt(String groupName, String configKey, int defaultValue);

    /**
     * 刷新指定分组的配置缓存
     * @param groupName 配置分组名
     */
    void refreshCache(String groupName);

    /**
     * 清除所有配置缓存
     */
    void clearAllCache();
}
